package inge_soft.gestoriusNuevo.business.service.abstraction;

import inge_soft.gestoriusNuevo.persistence.entity.implementation.Actividad;
import inge_soft.gestoriusNuevo.persistence.entity.implementation.Estado;
import inge_soft.gestoriusNuevo.persistence.entity.implementation.Evento;
import inge_soft.gestoriusNuevo.persistence.entity.implementation.TipoActividad;

import java.util.List;

import org.springframework.dao.DataAccessException;

/**
 * Interface (representa la abstraccion) de todos los servicios necesarios para
 * manipular Actividades
 * 
 * @author ariel
 *
 */
public interface IServicioActividad {

	/**
	 * Obtiene todas las actividades pertenecientes a un evento
	 * @param evento al cual pertenecen las actividades
	 * @return lista de actividades
	 * @throws DataAccessException si hay problemas de persistencia
	 */
	public List<Actividad> obtenerTodasActividades(Evento evento) throws DataAccessException;
	
	/**
	 * Crea la Actividad, asociandola al Evento solicitado
	 * @param evento previamente creado
	 * @param actividad a crear y asociar al evento
	 * @throws DataAccessException si hay problemas de persistencia
	 */
	public void crearActividad(Evento evento, Actividad actividad) throws DataAccessException;
	
	/**
	 * Modifica una actividad previamente creada
	 * @param actividad a modificar
	 * @throws DataAccessException si hay problemas de persistencia
	 */
	public void modificarActividad(Actividad actividad) throws DataAccessException;
	
	/**
	 * Obtiene todos los tipos de actividad
	 * @return lista con los tipos de actividad
	 * @throws DataAccessException si hay problemas de persistencia
	 */
	public List<TipoActividad> obtenerTodosTiposActividad() throws DataAccessException;
	
	/**
	 * Obtiene todos los Estados posibles para una actividad
	 * @return lista con los estados
	 * @throws DataAccessException si hay problemas de persistencia
	 */
	public List<Estado> obtenerTodosEstados() throws DataAccessException;
}
